<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../style.css" type="text/css" media="screen">
<link rel="stylesheet" href="../../print.css" type="text/css" media="print">
<meta content="ObjectProxy,mx.utils.ObjectProxy,dispatcher,notifiers,propertyList,proxyClass,object,type,uid,addEventListener,callProperty,deleteProperty,dispatchEvent,getComplexProperty,getProperty,hasEventListener,hasProperty,nextName,nextNameIndex,nextValue,propertyChangeHandler,readExternal,removeEventListener,setProperty,setupPropertyList,willTrigger,writeExternal" name="keywords">
<title>mx.utils.ObjectProxy</title>
</head>
<body>
<script type="text/javascript" language="javascript" src="../../asdoc.js"></script><script type="text/javascript" language="javascript" src="../../cookies.js"></script><script type="text/javascript" language="javascript">
<!--
				asdocTitle = 'ObjectProxy - Zentrum virtUOS: virtPresenter';
				var baseRef = '../../';
				window.onload = configPage;
			--></script>
<table style="display:none" id="titleTable" cellspacing="0" cellpadding="0" class="titleTable">
<tr>
<td align="left" class="titleTableTitle">virtPresenter AsDoc</td><td align="right" class="titleTableTopNav"><a onclick="loadClassListFrame('../../all-classes.html')" href="../../package-summary.html">All&nbsp;Packages</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../all-classes.html')" href="../../class-summary.html">All&nbsp;Classes</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../index-list.html')" href="../../all-index-A.html">Index</a>&nbsp;|&nbsp;<a href="../../index.html?mx/utils/ObjectProxy.html&amp;mx/utils/class-list.html" id="framesLink1">Frames</a><a onclick="parent.location=document.location" href="" style="display:none" id="noFramesLink1">No&nbsp;Frames</a></td><td rowspan="3" align="right" class="titleTableLogo"><img alt="Adobe Logo" title="Adobe Logo" class="logoImage" src="../../images/logo.jpg"></td>
</tr>
<tr class="titleTableRow2">
<td align="left" id="subTitle" class="titleTableSubTitle">Class&nbsp;ObjectProxy</td><td align="right" id="subNav" class="titleTableSubNav"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a></td>
</tr>
<tr class="titleTableRow3">
<td colspan="2">&nbsp;</td>
</tr>
</table>
<script type="text/javascript" language="javascript">
<!--
if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("Class ObjectProxy"); titleBar_setSubNav(false,true,false,false,false,false,true,false,false,false,false,false,false,false);}
--></script>
<div class="MainContent">
<table cellspacing="0" cellpadding="0" class="classHeaderTable">
<tr>
<td class="classHeaderTableLabel">Package</td><td><a onclick="javascript:loadClassListFrame('class-list.html')" href="package-detail.html">mx.utils</a></td>
</tr>
<tr>
<td class="classHeaderTableLabel">Class</td><td class="classSignature">public dynamic  class ObjectProxy</td>
</tr>
<tr>
<td class="classHeaderTableLabel">Inheritance</td><td class="inheritanceList">ObjectProxy <img class="inheritArrow" alt="Inheritance" title="Inheritance" src="../../images/inherit-arrow.gif"> flash.utils.Proxy</td>
</tr>
<tr>
<td class="classHeaderTableLabel">Implements</td><td>flash.utils.IExternalizable, <a href="../core/IPropertyChangeNotifier.html">IPropertyChangeNotifier</a></td>
</tr>
</table>
<p></p>
  This class provides the ability to track changes to an item
  managed by this proxy.
  Any number of objects can "listen" for changes on this
  object, by using the <code>addEventListener()</code> method.
   <p></p>
<br>
<span class="label">Example</span>
<br>  <pre>
  import mx.events.PropertyChangeEvent;
  import mx.utils.ObjectUtil;
  import mx.utils.ObjectProxy;
  import mx.utils.StringUtil;
   var a:Object = { name: "Tyler", age: 5, ssnum: "555-55-5555" };
  var p:ObjectProxy = new ObjectProxy(a);
  p.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateHandler);
  p.name = "Jacey";
  p.age = 2;
  delete p.ssnum;
   // handler function
  function updateHandler(event:ChangeEvent):void
  {
      trace(StringUtil.substitute("updateHandler('{0}', {1}, {2}, {3}, '{4}')",
                                     event.kind,
                                     event.property,
                                     event.oldValue,
                                     event.newValue,
                                     event.target.object_proxy::UUID));
  }
 
  // The trace output appears as:
  // updateHandler('opUpdate', name, Jacey, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
  // updateHandler('opUpdate', age, 2, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
  // updateHandler('opDelete', ssnum, null, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
  </pre>
 <p></p>
<br>
<hr>
</div>
<a name="propertySummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Properties</div>
<table id="summaryTableProperty" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#uid">uid</a> : String<div class="summaryTableDescription">
      The unique identifier for this object.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
</table>
</div>
<a name="protectedPropertySummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Protected Properties</div>
<table id="summaryTableProtectedProperty" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#dispatcher">dispatcher</a> : EventDispatcher<div class="summaryTableDescription">
      A reference to the EventDispatcher for this proxy.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#notifiers">notifiers</a> : Object<div class="summaryTableDescription">
      A hashmap of property change notifiers that this proxy is 
      listening for changes from; the key of the map is the property name.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#object">object</a> : Object<div class="summaryTableDescription">[read-only]
      The object being proxied.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#propertyList">propertyList</a> : Array<div class="summaryTableDescription">
      Contains a list of all of the property names for the proxied object.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#proxyClass">proxyClass</a> : Class<div class="summaryTableDescription">
      Indicates what kind of proxy to create
      when proxying complex properties.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#type">type</a> : QName<div class="summaryTableDescription">
      The qualified type name associated with this object.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
</table>
</div>
<a name="methodSummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Methods</div>
<table id="summaryTableMethod" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#ObjectProxy()">ObjectProxy</a>(item:Object = null, uid:String = null, proxyDepth:int = -1)</div>
<div class="summaryTableDescription">
      Initializes this proxy with the specified object, id and proxy depth.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#addEventListener()">addEventListener</a>(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void</div>
<div class="summaryTableDescription">
      Registers an event listener object  
      so that the listener receives notification of an event.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#dispatchEvent()">dispatchEvent</a>(event:Event):Boolean</div>
<div class="summaryTableDescription">
      Dispatches an event into the event flow.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#hasEventListener()">hasEventListener</a>(type:String):Boolean</div>
<div class="summaryTableDescription">
      Checks whether there are any event listeners registered 
      for a specific type of event.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#propertyChangeHandler()">propertyChangeHandler</a>(event:<a href="../events/PropertyChangeEvent.html">PropertyChangeEvent</a>):void</div>
<div class="summaryTableDescription">
      Called when a complex property is updated.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#readExternal()">readExternal</a>(input:IDataInput):void</div>
<div class="summaryTableDescription">
      Since Flex only uses ObjectProxy to wrap anonymous objects,
      the server flex.messaging.io.ObjectProxy instance serializes itself
      as a Map that will be returned as a plain ActionScript object.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#removeEventListener()">removeEventListener</a>(type:String, listener:Function, useCapture:Boolean = false):void</div>
<div class="summaryTableDescription">
      Removes an event listener.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#willTrigger()">willTrigger</a>(type:String):Boolean</div>
<div class="summaryTableDescription">
      Checks whether an event listener is registered with this object 
      or any of its ancestors for the specified event type.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#writeExternal()">writeExternal</a>(output:IDataOutput):void</div>
<div class="summaryTableDescription">
      Since Flex only serializes the inner ActionScript object that it wraps,
      the server flex.messaging.io.ObjectProxy populates itself
      with this anonymous object's contents and appears to the user as a Map.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
</table>
</div>
<a name="protectedMethodSummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Protected Methods</div>
<table id="summaryTableProtectedMethod" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#callProperty()">callProperty</a>(name:*, ... rest):*</div>
<div class="summaryTableDescription">
      Returns the value of the proxied object's method with the specified name.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#deleteProperty()">deleteProperty</a>(name:*):Boolean</div>
<div class="summaryTableDescription">
      Deletes the specified property on the proxied object and
      sends notification of the delete to the handler.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#getComplexProperty()">getComplexProperty</a>(name:*, value:*):*</div>
<div class="summaryTableDescription">
      Provides a place for subclasses to override how a complex property that
      needs to be either proxied or daisy chained for event bubbling is managed.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#getProperty()">getProperty</a>(name:*):*</div>
<div class="summaryTableDescription">
      Returns the specified property value of the proxied object.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#hasProperty()">hasProperty</a>(name:*):Boolean</div>
<div class="summaryTableDescription">
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#nextName()">nextName</a>(index:int):String</div>
<div class="summaryTableDescription">
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#nextNameIndex()">nextNameIndex</a>(index:int):int</div>
<div class="summaryTableDescription">
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#nextValue()">nextValue</a>(index:int):*</div>
<div class="summaryTableDescription">
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#setProperty()">setProperty</a>(name:*, value:*):void</div>
<div class="summaryTableDescription">
      Updates the specified property on the proxied object
      and sends notification of the update to the handler.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#setupPropertyList()">setupPropertyList</a>():void</div>
<div class="summaryTableDescription">
      This method creates an array of all of the property names for the 
      proxied object.</div>
</td><td class="summaryTableOwnerCol">ObjectProxy</td>
</tr>
</table>
</div>
<script type="text/javascript" language="javascript">
<!--
showHideInherited();
--></script>
<div class="MainContent">
<a name="propertyDetail"></a>
<div class="detailSectionHeader">Property detail</div>
<a name="dispatcher"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">dispatcher</td><td class="detailHeaderType">property</td>
</tr>
</table>
<div class="detailBody">
<code>protected var dispatcher:EventDispatcher</code><p>
      A reference to the EventDispatcher for this proxy.
     </p></div>
<a name="notifiers"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">notifiers</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>protected var notifiers:Object</code><p>
      A hashmap of property change notifiers that this proxy is 
      listening for changes from; the key of the map is the property name.
     </p></div>
<a name="object"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">object</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>object:Object</code>&nbsp;&nbsp;[read-only]<p>
      The object being proxied.
     </p><p>This property can be used as the source for data binding.</p>
<span class="label">Implementation</span>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;object_proxy function get object():Object</code>
<br>
</div>
<a name="propertyList"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">propertyList</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>protected var propertyList:Array</code><p>
      Contains a list of all of the property names for the proxied object.
      Descendants need to fill this list by overriding the
      <code>setupPropertyList()</code> method.
     </p></div>
<a name="proxyClass"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">proxyClass</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>protected var proxyClass:Class</code><p>
      Indicates what kind of proxy to create
      when proxying complex properties.
      Subclasses should assign this value appropriately.
     </p></div>
<a name="type"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">type</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>type:QName</code>&nbsp;&nbsp;[read-write]<p>
      The qualified type name associated with this object.
     </p><p>This property can be used as the source for data binding.</p>
<span class="label">Implementation</span>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;object_proxy function get type():QName</code>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;object_proxy function set type(value:QName):void</code>
<br>
</div>
<a name="uid"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">uid</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>uid:String</code>&nbsp;&nbsp;[read-write]<p>
      The unique identifier for this object.
     </p><p>This property can be used as the source for data binding.</p>
<span class="label">Implementation</span>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;public function get uid():String</code>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;public function set uid(value:String):void</code>
<br>
</div>
<a name="constructorDetail"></a>
<div class="detailSectionHeader">Constructor detail</div>
<a name="ObjectProxy()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">ObjectProxy</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">constructor</td>
</tr>
</table>
<div class="detailBody">
<code>public function ObjectProxy(item:Object = null, uid:String = null, proxyDepth:int = -1)</code><p>
      Initializes this proxy with the specified object, id and proxy depth.
     
      </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">item</span>:Object</code> (default = <code>null</code>)<code></code> &mdash; Object to proxy.
      If no item is specified, an anonymous object will be constructed
      and assigned.
           </td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">uid</span>:String</code> (default = <code>null</code>)<code></code> &mdash; String containing the unique id
      for this object instance.
      Required for IPropertyChangeNotifier compliance as every object must 
      provide a unique way of identifying it.
      If no value is specified, a random id will be assigned.
           </td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">proxyDepth</span>:int</code> (default = <code>-1</code>)<code></code> &mdash; An integer indicating how many levels in a complex
      object graph should have a proxy created during property access.
      The default is -1, meaning "proxy to infinite depth".
      
      </td>
</tr>
</table>
<br>
<span class="label">Example</span>
<br>           <pre>
      import mx.events.PropertyChangeEvent;
      import mx.utils.ObjectUtil;
      import mx.utils.ObjectProxy;
      import mx.utils.StringUtil;
           var a:Object = { name: "Tyler", age: 5, ssnum: "555-55-5555" };
      var p:ObjectProxy = new ObjectProxy(a);
      p.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateHandler);
      p.name = "Jacey";
      p.age = 2;
      delete p.ssnum;
           // handler function
      function updateHandler(event:PropertyChangeEvent):void
      {
          trace(StringUtil.substitute("updateHandler('{0}', {1}, {2}, {3}, '{4}')",
                                         event.kind,
                                         event.property,
                                         event.oldValue,
                                         event.newValue,
                                         event.target.uid));
      }
           // trace output
      updateHandler('opUpdate', name, Jacey, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      updateHandler('opUpdate', age, 2, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      updateHandler('opDelete', ssnum, null, '698AF8CB-B3D9-21A3-1AFFDGHT89075CD2')
      </pre>
     <p></p>
</div>
<a name="methodDetail"></a>
<div class="detailSectionHeader">Method detail</div>
<a name="addEventListener()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">addEventListener</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td>
</tr>
</table>
<div class="detailBody">
<code>public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void</code><p>
      Registers an event listener object  
      so that the listener receives notification of an event. 
      For more information, see the flash.events.EventDispatcher class.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">type</span>:String</code></td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">listener</span>:Function</code></td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">useCapture</span>:Boolean</code> (default = <code>false</code>)<code></code></td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">priority</span>:int</code> (default = <code>0</code>)<code></code></td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">useWeakReference</span>:Boolean</code> (default = <code>false</code>)<code></code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.events.EventDispatcher.addEventListener()</div>
</div>
<a name="callProperty()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">callProperty</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function callProperty(name:*, ... rest):*</code><p>
      Returns the value of the proxied object's method with the specified name.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">name</span>:*</code> &mdash; The name of the method being invoked.
           </td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code>... <span class="label">rest</span></code> &mdash; An array specifying the arguments to the
      called method.
           </td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>*</code> &mdash; The return value of the called method.
     </td>
</tr>
</table>
</div>
<a name="deleteProperty()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">deleteProperty</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function deleteProperty(name:*):Boolean</code><p>
      Deletes the specified property on the proxied object and
      sends notification of the delete to the handler.
     
      </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">name</span>:*</code> &mdash; Typically a string containing the name of the property,
      or possibly a QName where the property name is found by 
      inspecting the <code>localName</code> property.
           </td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>Boolean</code> &mdash; A Boolean indicating if the property was deleted.
     </td>
</tr>
</table>
</div>
<a name="dispatchEvent()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">dispatchEvent</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function dispatchEvent(event:Event):Boolean</code><p>
      Dispatches an event into the event flow. 
      For more information, see the flash.events.EventDispatcher class.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">event</span>:Event</code></td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>Boolean</code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.events.EventDispatcher.dispatchEvent()</div>
</div>
<a name="getComplexProperty()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">getComplexProperty</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>object_proxy function getComplexProperty(name:*, value:*):*</code><p>
      Provides a place for subclasses to override how a complex property that
      needs to be either proxied or daisy chained for event bubbling is managed.
     
      </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">name</span>:*</code> &mdash; Typically a string containing the name of the property,
      or possibly a QName where the property name is found by 
      inspecting the <code>localName</code> property.
           </td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">value</span>:*</code> &mdash; The property value.
           </td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>*</code> &mdash; The property value or an instance of <code>ObjectProxy</code>.
     </td>
</tr>
</table>
</div>
<a name="getProperty()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">getProperty</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function getProperty(name:*):*</code><p>
      Returns the specified property value of the proxied object.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">name</span>:*</code> &mdash; Typically a string containing the name of the property,
      or possibly a QName where the property name is found by 
      inspecting the <code>localName</code> property.
           </td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>*</code> &mdash; The value of the property.
      In some instances this value may be an instance of 
      <code>ObjectProxy</code>.
     </td>
</tr>
</table>
</div>
<a name="hasEventListener()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">hasEventListener</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function hasEventListener(type:String):Boolean</code><p>
      Checks whether there are any event listeners registered 
      for a specific type of event. 
      This allows you to determine where an object has altered handling 
      of an event type in the event flow hierarchy. 
      For more information, see the flash.events.EventDispatcher class.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">type</span>:String</code></td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>Boolean</code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.events.EventDispatcher.hasEventListener()</div>
</div>
<a name="hasProperty()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">hasProperty</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function hasProperty(name:*):Boolean</code><p>
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.
      
      </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">name</span>:*</code> &mdash; The property name that should be tested 
      for existence.
           </td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>Boolean</code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.utils.Proxy.hasProperty()</div>
</div>
<a name="nextName()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">nextName</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function nextName(index:int):String</code><p>
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">index</span>:int</code></td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>String</code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.utils.Proxy.nextName()</div>
</div>
<a name="nextNameIndex()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">nextNameIndex</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function nextNameIndex(index:int):int</code><p>
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">index</span>:int</code></td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>int</code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.utils.Proxy.nextNameIndex()</div>
</div>
<a name="nextValue()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">nextValue</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function nextValue(index:int):*</code><p>
      This is an internal function that must be implemented by 
      a subclass of flash.utils.Proxy.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">index</span>:int</code></td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>*</code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.utils.Proxy.nextValue()</div>
</div>
<a name="propertyChangeHandler()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">propertyChangeHandler</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function propertyChangeHandler(event:<a href="../events/PropertyChangeEvent.html">PropertyChangeEvent</a>):void</code><p>
      Called when a complex property is updated.
     </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">event</span>:<a href="../events/PropertyChangeEvent.html">PropertyChangeEvent</a></code></td>
</tr>
</table>
</div>
<a name="readExternal()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">readExternal</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function readExternal(input:IDataInput):void</code><p>
      Since Flex only uses ObjectProxy to wrap anonymous objects,
      the server flex.messaging.io.ObjectProxy instance serializes itself
      as a Map that will be returned as a plain ActionScript object. 
      You can then set the object_proxy object property to this value.
     </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">input</span>:IDataInput</code></td>
</tr>
</table>
</div>
<a name="removeEventListener()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">removeEventListener</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void</code><p>
      Removes an event listener. 
      If there is no matching listener registered with the EventDispatcher object, 
      a call to this method has no effect.
      For more information, see the flash.events.EventDispatcher class.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">type</span>:String</code></td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">listener</span>:Function</code></td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">useCapture</span>:Boolean</code> (default = <code>false</code>)<code></code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.events.EventDispatcher.removeEventListener()</div>
</div>
<a name="setProperty()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">setProperty</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>flash_proxy override function setProperty(name:*, value:*):void</code><p>
      Updates the specified property on the proxied object
      and sends notification of the update to the handler.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">name</span>:*</code> &mdash; Object containing the name of the property that
      should be updated on the proxied object.
           </td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">value</span>:*</code> &mdash; Value that should be set on the proxied object.
     </td>
</tr>
</table>
</div>
<a name="setupPropertyList()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">setupPropertyList</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>protected function setupPropertyList():void</code><p>
      This method creates an array of all of the property names for the 
      proxied object.
      Descendants must override this method if they wish to add more 
      properties to this list.
      Be sure to call <code>super.setupPropertyList</code> before making any
      changes to the <code>propertyList</code> property.
     </p></div>
<a name="willTrigger()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">willTrigger</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function willTrigger(type:String):Boolean</code><p>
      Checks whether an event listener is registered with this object 
      or any of its ancestors for the specified event type. 
      This method returns <code>true</code> if an event listener is triggered 
      during any phase of the event flow when an event of the specified 
      type is dispatched to this object or any of its descendants.
      For more information, see the flash.events.EventDispatcher class.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">type</span>:String</code></td>
</tr>
</table>
<p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>Boolean</code></td>
</tr>
</table>
<p>
<span class="label">See also</span>
</p>
<div class="seeAlso">flash.events.EventDispatcher.willTrigger()</div>
</div>
<a name="writeExternal()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">writeExternal</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function writeExternal(output:IDataOutput):void</code><p>
      Since Flex only serializes the inner ActionScript object that it wraps,
      the server flex.messaging.io.ObjectProxy populates itself
      with this anonymous object's contents and appears to the user as a Map.
     </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">output</span>:IDataOutput</code></td>
</tr>
</table>
</div>
<br>
<br>
<hr>
<br>
<p></p>
<center class="copyright"> 
</center>
</div>
</body>
</html>
<!-- -->
